/**
 * 调试工具，用于排查API请求问题
 */
import config from '../config';

// 使用全局配置中的调试模式
const DEBUG_MODE = config.debug;

/**
 * 打印API请求信息
 * @param method 请求方法
 * @param url 请求URL
 * @param data 请求数据
 */
export const logRequest = (method: string, url: string, data?: any) => {
  if (!DEBUG_MODE) return;
  
  console.group(`API请求: ${method} ${url}`);
  console.log('请求时间:', new Date().toLocaleString());
  if (data) {
    console.log('请求数据:', data);
  }
  console.groupEnd();
};

/**
 * 打印API响应信息
 * @param method 请求方法
 * @param url 请求URL
 * @param response 响应数据
 * @param error 错误信息
 */
export const logResponse = (method: string, url: string, response?: any, error?: any) => {
  if (!DEBUG_MODE) return;
  
  console.group(`API响应: ${method} ${url}`);
  console.log('响应时间:', new Date().toLocaleString());
  if (response) {
    console.log('响应数据:', response);
  }
  if (error) {
    console.error('错误信息:', error);
  }
  console.groupEnd();
};

/**
 * 检查请求参数是否有效
 * @param params 请求参数
 * @param requiredFields 必填字段列表，如果不提供则检查所有字段
 * @returns 检查结果和错误信息
 */
export const validateParams = (params: Record<string, any>, requiredFields?: string[]) => {
  const errors: string[] = [];
  
  // 检查参数是否为空
  const fieldsToCheck = requiredFields || Object.keys(params);
  
  fieldsToCheck.forEach(key => {
    const value = params[key];
    if (value === undefined || value === null || (typeof value === 'string' && value.trim() === '')) {
      errors.push(`参数 ${key} 不能为空`);
    }
  });
  
  return {
    valid: errors.length === 0,
    errors,
    message: errors.length > 0 ? errors[0] : ''
  };
};

export default {
  logRequest,
  logResponse,
  validateParams
}; 